from sqlalchemy import Column, Integer, String, Text, Boolean, DateTime, JSON
from sqlalchemy.sql import func
from app.db.base import Base


class PlatformTemplate(Base):
    """平台模板模型"""
    __tablename__ = "platform_templates"

    id = Column(Integer, primary_key=True, index=True)
    platform_name = Column(String(50), nullable=False)  # 平台名称
    template_name = Column(String(100), nullable=False)  # 模板名称
    display_name = Column(String(100), nullable=False)  # 显示名称
    description = Column(Text)  # 模板描述

    # 模板配置
    config = Column(JSON, nullable=False)  # 模板配置
    target_duration = Column(Integer)  # 目标时长（秒）
    max_segments = Column(Integer)  # 最大片段数

    # 风格配置
    opening_style = Column(String(50))  # 开头风格
    transition_style = Column(String(50))  # 转场风格
    background_music_style = Column(String(50))  # 背景音乐风格
    subtitle_style = Column(String(50))  # 字幕风格

    # 内容规则
    content_rules = Column(JSON)  # 内容选取规则
    editing_rules = Column(JSON)  # 剪辑规则

    # 状态
    is_active = Column(Boolean, default=True)
    is_default = Column(Boolean, default=False)

    # 元数据
    created_by = Column(String(100))  # 创建者
    created_at = Column(DateTime(timezone=True), server_default=func.now())
    updated_at = Column(DateTime(timezone=True), onupdate=func.now())

    def __repr__(self):
        return f"<PlatformTemplate(platform='{self.platform_name}', template='{self.template_name}')>"